Repository navigation
fix(i18n/project): 语言设置覆盖 CLI 入口,修项目文件兼容与 CWD 绑定 - #5
Merged
Merged
Conversation
- main.vala: 语言环境准备移到 main() 的 app.run() 之前, GUI/CLI/二次实例共用; 显式语言清掉 LC_ALL/LC_MESSAGES; 跟随系统按真实语言优先级判断, locale 拼接处理 @script 后缀 - project_manager/cli: 字段回退改为取到数组才算命中; work_dir 缺失时相对路径丢弃 (不再绑 CWD); null 防御覆盖 checked_dirs/common_phrases/快照; CLI 补存在性过滤与 GUI 对齐 - build-windows-package.sh: i18n 冒烟改为干净 env + 临时 settings.json 驱动 5 个用例, 加 timeout/保留 stderr/避免 SIGPIPE 误报 - tests: 新增 test_project_manager (字段回退/null/正斜杠/相对路径/work_dir 缺失) - docs/metainfo: 修正 LANGUAGE 表述与冒烟覆盖范围说明
CI 此前只有 vala-lint 与各平台打包, tests/ 从未被编译或执行; 在依赖齐全的 deb 容器里跑新增单测, 用 --no-rebuild 限定单个目标避免外部命令依赖误报。
valac 报 'Owned namespace fields can only be initialized in a function or method' (tests/test_project_manager.vala:34-36), 四平台 CI 全部因此失败; 去掉初始化器, 改由 setup_fixture() 赋值。同时订正 workflow 注释: 各平台会编译 tests/ 目标, 缺的是 meson test 执行。
查明 tools/build-deb.sh 内含 'meson test -C BUILD --print-errorlogs --num-processes=1', CI 日志显示 Ok: 13, 新增单测已自动纳入; 前一次基于误判加的 workflow 步骤撤回, 最终 PR 不改动 workflow。
Sam-Fic
added a commit
that referenced
this pull request
Nov 11, 2026
合并 PR #5 (语言设置覆盖 CLI 入口、项目文件兼容与 CWD 绑定修复) 后的版本发布: - meson.build 版本号 4.10.2 -> 4.10.3 - metainfo 新增 4.10.3 release 条目 (2026-11-12), 覆盖语言环境统一入口、 LC_ALL/LC_MESSAGES 优先级、5 用例 i18n 冒烟、字段回退与 null 防御、 GUI/CLI 加载一致性与新增单测
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
对
v4.10.0..HEAD(4.10.1 / 4.10.2 发布批次)做合并级审查后发现的阻断项已修复。当前main已是v4.10.2,本 PR 是补丁分支,合并后另行发 4.10.3。阻断项与改法
src/main.valacommand_line()在load_settings_language()之前return cli.run()apply_language_environment(),在main()的app.run()之前调用;GUI / 纯 CLI / 二次实例共用LC_ALL/LC_MESSAGES优先级高于LANG,残留LC_ALL=C会让显式选中文失效src/main.vala原 zh/en 分支LC_ALL/LC_MESSAGES;跟随系统按LC_ALL → LC_MESSAGES → LANG判断外部真实语言,且不恢复C类变量work_dir缺失时,相对勾选路径被g_canonicalize_filename(path, NULL)绑到进程 CWD,可能勾错文件并被 CLI--save写回src/services/project_manager.valacanonicalize_checked_path()work_dir且路径相对时返回null,由调用方丢弃has_member命中即停;checked_dirs/common_phrases/ 快照仍会把null塞进集合;整批兼容性零单测project_manager.vala/cli.vala/tests/ProjectManager.read_string_array()(取到数组才算命中 + null/空串过滤),四处复用;新增test_project_manager其它改动
src/cli.vala:load_project复用上述 helper 并补query_exists()过滤,与 GUI 加载结果一致,不再把不存在的路径写回项目文件。src/main.vala:build_windows_lang()处理g_win32_getlocale()可能返回的@Latn/@Cyrl修饰符,codeset 排在 modifier 之前;Clocale 判定改为精确比较。tools/build-windows-package.sh:i18n 冒烟不再靠外部注入LANG=zh_CN.UTF-8绕过应用逻辑,改为干净环境(env -u LANG/LC_ALL/...)+ 临时XDG_CONFIG_HOME里的settings.json驱动 5 个用例:偏好=zh、偏好=en、偏好=zh +LC_ALL=C、跟随系统尊重外部LANG、跟随系统干净环境。加timeout 30、保留 stderr、用 bash 字符串匹配取代grep -q管道(避免pipefail下 SIGPIPE 141 误报)。tests/meson.build:注册第 13 个测试test_project_manager,覆盖字段回退、非字符串元素、正斜杠、相对路径、work_dir缺失。docs/I18N.md:修正「Windows 下LANGUAGE会被 gettext 忽略」为「仅当前 locale 为 C 时忽略」,补充语言环境生效范围。data/...metainfo.xml:修正 4.10.2 冒烟测试覆盖范围的夸大表述,收敛 4.10.1 的兼容性声明。验证
git diff --check、bash -n tools/build-windows-package.sh、metainfo XML 解析。43082679622,全绿):vala-lint 通过;DEB / Flatpak / Windows / macOS 四个构建 job 全部通过;tools/build-deb.sh的全量meson test13/13 OK,新增的test_project_manager已在其中通过(1/1 ... OK);Windows 便携包 5 个 i18n 冒烟用例全部 OK。tests/test_project_manager.vala里命名空间级 owned 字段带初始化器(Owned namespace fields can only be initialized in a function or method)四平台编译失败,已修;另曾误判「CI 不跑 meson test」而在 workflow 里加了冗余步骤,查明tools/build-deb.sh本就跑全量单测后已撤销,最终 PR 不改动 workflow。checked_entries为对象数组的场景仍属未验证。备注
github.com在当前网络不可达,本分支通过 GitHub Git Data API 推送;远端 commit 与本地62da661cSHA、tree、全部 blob 均一致。